Presto-তে Hive সংযোগের মাধ্যমে বড় ডেটাসেটগুলির উপর কোয়েরি এক্সিকিউশন দ্রুততর এবং কার্যকরী করা সম্ভব। Hive তে Partitioning এবং Bucketing ব্যবহৃত হয় ডেটা শার্ডিং এবং স্পর্শকাতর কোয়েরি পারফরম্যান্স অর্জনের জন্য। Presto এ Hive Partitioning এবং Bucketing ব্যবহার করার মাধ্যমে কোয়েরির কার্যকারিতা উন্নত করা যায় এবং ডেটার মধ্যে আরো ভালো পারফরম্যান্স পাওয়া যায়।
Partitioning হল ডেটার বিভাজন যাতে ডেটা একাধিক ভাগে ভাগ করা যায়, এবং প্রতিটি ভাগ আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে। Hive Partitioning সাধারণত বড় ডেটাসেটগুলির জন্য ব্যবহৃত হয়, যেখানে কিছু কলামের মানের ভিত্তিতে ডেটাকে ভাগ করা হয় (যেমন, date
, region
, বা year
ইত্যাদি)।
Presto তে Hive Partitioning ব্যবহার:
Presto তে Hive Partitioning ব্যবহার করার জন্য আপনাকে Hive তে একটি Partitioned Table তৈরি করতে হবে, এবং Presto এই পার্টিশনগুলির উপর কোয়েরি চালাবে। Partitioning মূলত filtering এবং pruning প্রক্রিয়া উন্নত করে, কারণ Presto সঠিক পার্টিশন গুলি নির্বাচন করে ডেটা প্রসেস করে।
CREATE TABLE orders (
order_id INT,
order_date DATE,
amount DECIMAL
)
PARTITIONED BY (year INT, month INT);
INSERT INTO orders PARTITION (year = 2022, month = 01)
VALUES (1, '2022-01-01', 100.00);
Presto দিয়ে partitioned Hive টেবিল থেকে কোয়েরি চালানোর সময় Presto সঠিক পার্টিশন থেকে ডেটা স্ক্যান করবে:
SELECT * FROM hive.default.orders WHERE year = 2022 AND month = 01;
এখানে Presto শুধুমাত্র year = 2022
এবং month = 01
পার্টিশন স্ক্যান করবে, পুরো টেবিল স্ক্যান করবে না।
Bucketing হল একটি টেকনিক যা ডেটাকে একটি নির্দিষ্ট সংখ্যক বাকেটে ভাগ করে। প্রতিটি বাকেট আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে এবং একটি কনস্ট্যান্ট ফাংশন (যেমন hash
ফাংশন) ব্যবহার করে ডেটাকে বিভক্ত করা হয়। Bucketing সাধারণত JOIN এবং GROUP BY অপারেশনগুলোকে আরও দ্রুত করে।
Presto তে Hive Bucketing ব্যবহার করতে হলে, প্রথমে Hive তে Bucketed Table তৈরি করতে হবে, তারপর Presto ঐ Buckets এর উপর কোয়েরি চালাবে। Bucketing নির্দিষ্ট কলামের মানের ভিত্তিতে ডেটা ভাগ করে, এবং এটি JOIN বা GROUP BY অপারেশনগুলির পারফরম্যান্স উন্নত করে।
CREATE TABLE orders (
order_id INT,
customer_id INT,
amount DECIMAL
)
CLUSTERED BY (customer_id) INTO 4 BUCKETS;
এখানে customer_id
কলামের উপর Bucketing করা হয়েছে এবং ৪টি Bucket তৈরি করা হয়েছে।
INSERT INTO orders
VALUES (1, 101, 100.00), (2, 102, 200.00), (3, 103, 150.00);
Presto Bucketing সমর্থন করে, এবং এটি Buckets থেকে দ্রুত ডেটা প্রসেস করতে পারে। Presto দিয়ে Bucketing ব্যবহার করে কোয়েরি চালানো:
SELECT * FROM hive.default.orders WHERE customer_id = 101;
Presto, Hive Bucketing থেকে দ্রুত ডেটা সিলেক্ট করবে, কারণ customer_id
Bucketing কলাম এবং ডেটা ঐ একই বকেটে রয়েছে।
পার্থক্য | Partitioning | Bucketing |
---|---|---|
ডেটা ভাগের ভিত্তি | কলামের মানের ভিত্তিতে ডেটা ভাগ করা হয়। | ডেটা একটি নির্দিষ্ট সংখ্যক বকেটে ভাগ করা হয়। |
ডেটা অর্গানাইজেশন | বিভিন্ন পার্টিশন (ফোল্ডার) হিসেবে অর্গানাইজ করা হয়। | একটি কলাম ভিত্তিক ভিন্ন ভিন্ন ফাইল ফোল্ডারে বিভক্ত। |
ব্যবহার | সাধারণত বড় ডেটাসেটগুলির জন্য পারফরম্যান্স উন্নত করে। | JOIN অপারেশন বা GROUP BY অপারেশন দ্রুত করে। |
কোয়েরি অপটিমাইজেশন | পার্টিশন ভিত্তিক ফিল্টারিং ও কোয়েরি অপটিমাইজেশন। | Bucketing কলাম ব্যবহার করে দ্রুত JOIN অপারেশন। |
Presto-তে Hive Partitioning এবং Bucketing ব্যবহার করলে ডেটার প্রক্রিয়াকরণ এবং কোয়েরি এক্সিকিউশন পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হয়।
common.read_more